/** Implementation of Follow Class.
 * @file 
 * @author Jeremy Schultz
 */
#include "Follow.h"

using namespace std;

//-----------------------------------------------------------------------------
// Constructor
Follow::Follow()  {
	set[PLset::PROGRAM] = new PLset();
	set[PLset::PROGRAM]->add(new Token(Token::EMPTY) );

	set[PLset::BLOCK] = new PLset();
	set[PLset::BLOCK]->add(new Token(Token::PERIOD) );
	set[PLset::BLOCK]->add(new Token(Token::SEMI_COLON) );

	set[PLset::DEFINITION_PART] = new PLset();
	set[PLset::DEFINITION_PART]->add(new Word("skip", Token::KEYWORD) );
	set[PLset::DEFINITION_PART]->add(new Word("read", Token::KEYWORD) );
	set[PLset::DEFINITION_PART]->add(new Word("write", Token::KEYWORD) );
	set[PLset::DEFINITION_PART]->add(new Word("") );    //ID
	set[PLset::DEFINITION_PART]->add(new Word("call", Token::KEYWORD) );
	set[PLset::DEFINITION_PART]->add(new Word("if", Token::KEYWORD) );
	set[PLset::DEFINITION_PART]->add(new Word("do", Token::KEYWORD) );
	set[PLset::DEFINITION_PART]->add(new Word("end", Token::KEYWORD) );

	set[PLset::DEFINITION] = new PLset();
	set[PLset::DEFINITION]->add(new Token(Token::SEMI_COLON) );

	set[PLset::CONSTANT_DEFINITION] = new PLset();
	set[PLset::CONSTANT_DEFINITION]->add(new Token(Token::SEMI_COLON) );

	set[PLset::VARIABLE_DEFINITION] = new PLset();
	set[PLset::VARIABLE_DEFINITION]->add(new Token(Token::SEMI_COLON) );

	set[PLset::VARIABLE_DEFINITION1] = new PLset();
	set[PLset::VARIABLE_DEFINITION1]->add(new Token(Token::SEMI_COLON)  );

	set[PLset::TYPE_SYMBOL] = new PLset();
	set[PLset::TYPE_SYMBOL]->add(new Word("") );    //ID
	set[PLset::TYPE_SYMBOL]->add(new Word("array", Token::KEYWORD) );

	set[PLset::VARIABLE_LIST] = new PLset();
	set[PLset::VARIABLE_LIST]->add(new Token(Token::LEFT_BRACKET) );
	set[PLset::VARIABLE_LIST]->add(new Token(Token::SEMI_COLON) );

	set[PLset::VARIABLE_NAME1] = new PLset();
	set[PLset::VARIABLE_NAME1]->add(new Token(Token::LEFT_BRACKET) );
	set[PLset::VARIABLE_NAME1]->add(new Token(Token::SEMI_COLON) );

	set[PLset::PROCEDURE_DEFINITION] = new PLset();
	set[PLset::PROCEDURE_DEFINITION]->add(new Token(Token::SEMI_COLON)  );

	set[PLset::STATEMENT_PART] = new PLset();
	set[PLset::STATEMENT_PART]->add(new Word("end", Token::KEYWORD) );
	set[PLset::STATEMENT_PART]->add(new Token(Token::GUARD_SEPERATOR) );
	set[PLset::STATEMENT_PART]->add(new Word("od", Token::KEYWORD) );
	set[PLset::STATEMENT_PART]->add(new Word("fi", Token::KEYWORD) );

	set[PLset::STATEMENT] = new PLset();
	set[PLset::STATEMENT]->add(new Token(Token::SEMI_COLON) );

	set[PLset::EMPTY_STATEMENT] = new PLset();
	set[PLset::EMPTY_STATEMENT]->add(new Token(Token::SEMI_COLON) );

	set[PLset::READ_STATEMENT] = new PLset();
	set[PLset::READ_STATEMENT]->add(new Token(Token::SEMI_COLON) );

	set[PLset::VARIABLE_ACCESS_LIST] = new PLset();
	set[PLset::VARIABLE_ACCESS_LIST]->add(new Token(Token::SEMI_COLON)  );
	set[PLset::VARIABLE_ACCESS_LIST]->add(new Token(Token::ASSIGN)  );

	set[PLset::VARIABLE_ACCESS1] = new PLset();
	set[PLset::VARIABLE_ACCESS1]->add(new Token(Token::SEMI_COLON)  );
	set[PLset::VARIABLE_ACCESS1]->add(new Token(Token::ASSIGN)  );

	set[PLset::WRITE_STATEMENT] = new PLset();
	set[PLset::WRITE_STATEMENT]->add(new Token(Token::SEMI_COLON) );

	set[PLset::EXPRESSION_LIST] = new PLset();
	set[PLset::EXPRESSION_LIST]->add(new Token(Token::SEMI_COLON) );

	set[PLset::EXPRESSION1] = new PLset();
	set[PLset::EXPRESSION1]->add(new Token(Token::SEMI_COLON) );

	set[PLset::ASSIGNMENT_STATEMENT] = new PLset();
	set[PLset::ASSIGNMENT_STATEMENT]->add(new Token(Token::SEMI_COLON) );

	set[PLset::PROCEDURE_STATEMENT] = new PLset();
	set[PLset::PROCEDURE_STATEMENT]->add(new Token(Token::SEMI_COLON) );

	set[PLset::IF_STATEMENT] = new PLset();
	set[PLset::IF_STATEMENT]->add(new Token(Token::SEMI_COLON) );

	set[PLset::DO_STATEMENT] = new PLset();
	set[PLset::DO_STATEMENT]->add(new Token(Token::SEMI_COLON) );

	set[PLset::GUARDED_COMMAND_LIST] = new PLset();
	set[PLset::GUARDED_COMMAND_LIST]->add(new Word("od", Token::KEYWORD) );
	set[PLset::GUARDED_COMMAND_LIST]->add(new Word("fi", Token::KEYWORD) );

	set[PLset::GUARDED_COMMAND1] = new PLset();
	set[PLset::GUARDED_COMMAND1]->add(new Word("od", Token::KEYWORD) );
	set[PLset::GUARDED_COMMAND1]->add(new Word("fi", Token::KEYWORD) );

	set[PLset::GUARDED_COMMAND] = new PLset();
	set[PLset::GUARDED_COMMAND]->add(new Token(Token::GUARD_SEPERATOR) );
	set[PLset::GUARDED_COMMAND]->add(new Word("od", Token::KEYWORD) );
	set[PLset::GUARDED_COMMAND]->add(new Word("fi", Token::KEYWORD) );

	set[PLset::EXPRESSION] = new PLset();
	set[PLset::EXPRESSION]->add(new Token(Token::COMMA) );
	set[PLset::EXPRESSION]->add(new Token(Token::SEMI_COLON) );
	set[PLset::EXPRESSION]->add(new Token(Token::ARROW) );
	set[PLset::EXPRESSION]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::EXPRESSION]->add(new Token(Token::RIGHT_BRACKET) );

	set[PLset::PRIMARY_EXPRESSION1] = new PLset();
	set[PLset::PRIMARY_EXPRESSION1]->add(new Token(Token::COMMA) );
	set[PLset::PRIMARY_EXPRESSION1]->add(new Token(Token::SEMI_COLON) );
	set[PLset::PRIMARY_EXPRESSION1]->add(new Token(Token::ARROW) );
	set[PLset::PRIMARY_EXPRESSION1]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::PRIMARY_EXPRESSION1]->add(new Token(Token::RIGHT_BRACKET) );

	set[PLset::PRIMARY_OPERATOR] = new PLset();
	set[PLset::PRIMARY_OPERATOR]->add(new Token(Token::MINUS) );
	set[PLset::PRIMARY_OPERATOR]->add(new Token(Token::NUMBER) );
	set[PLset::PRIMARY_OPERATOR]->add(new Word("false", Token::KEYWORD) );
	set[PLset::PRIMARY_OPERATOR]->add(new Word("true", Token::KEYWORD) );
	set[PLset::PRIMARY_OPERATOR]->add(new Word("") );    //ID
	set[PLset::PRIMARY_OPERATOR]->add(new Token(Token::LEFT_PARATHESIS) );
	set[PLset::PRIMARY_OPERATOR]->add(new Token(Token::NOT) );

	set[PLset::PRIMARY_EXPRESSION] = new PLset();
	set[PLset::PRIMARY_EXPRESSION]->add(new Token(Token::AND) );
	set[PLset::PRIMARY_EXPRESSION]->add(new Token(Token::OR) );
	set[PLset::PRIMARY_EXPRESSION]->add(new Token(Token::COMMA) );
	set[PLset::PRIMARY_EXPRESSION]->add(new Token(Token::SEMI_COLON) );
	set[PLset::PRIMARY_EXPRESSION]->add(new Token(Token::ARROW) );
	set[PLset::PRIMARY_EXPRESSION]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::PRIMARY_EXPRESSION]->add(new Token(Token::RIGHT_BRACKET) );

	set[PLset::PRIMARY_EXPRESSION11] = new PLset();
	set[PLset::PRIMARY_EXPRESSION11]->add(new Token(Token::AND) );
	set[PLset::PRIMARY_EXPRESSION11]->add(new Token(Token::OR) );
	set[PLset::PRIMARY_EXPRESSION11]->add(new Token(Token::COMMA) );
	set[PLset::PRIMARY_EXPRESSION11]->add(new Token(Token::SEMI_COLON) );
	set[PLset::PRIMARY_EXPRESSION11]->add(new Token(Token::ARROW) );
	set[PLset::PRIMARY_EXPRESSION11]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::PRIMARY_EXPRESSION11]->add(new Token(Token::RIGHT_BRACKET) );

	set[PLset::RELATIONAL_OPERATOR] = new PLset();
	set[PLset::RELATIONAL_OPERATOR]->add(new Token(Token::MINUS) );
	set[PLset::RELATIONAL_OPERATOR]->add(new Token(Token::NUMBER) );
	set[PLset::RELATIONAL_OPERATOR]->add(new Word("false", Token::KEYWORD) );
	set[PLset::RELATIONAL_OPERATOR]->add(new Word("true", Token::KEYWORD) );
	set[PLset::RELATIONAL_OPERATOR]->add(new Word("") );    //ID
	set[PLset::RELATIONAL_OPERATOR]->add(new Token(Token::LEFT_PARATHESIS) );
	set[PLset::RELATIONAL_OPERATOR]->add(new Token(Token::NOT) );

	set[PLset::SIMPLE_EXPRESSION] = new PLset();
	set[PLset::SIMPLE_EXPRESSION]->add(new Token(Token::LESS_THAN) );
	set[PLset::SIMPLE_EXPRESSION]->add(new Token(Token::EQUAL) );
	set[PLset::SIMPLE_EXPRESSION]->add(new Token(Token::GREATER_THAN) );
	set[PLset::SIMPLE_EXPRESSION]->add(new Token(Token::AND) );
	set[PLset::SIMPLE_EXPRESSION]->add(new Token(Token::OR) );
	set[PLset::SIMPLE_EXPRESSION]->add(new Token(Token::COMMA) );
	set[PLset::SIMPLE_EXPRESSION]->add(new Token(Token::SEMI_COLON) );
	set[PLset::SIMPLE_EXPRESSION]->add(new Token(Token::ARROW) );
	set[PLset::SIMPLE_EXPRESSION]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::SIMPLE_EXPRESSION]->add(new Token(Token::RIGHT_BRACKET) );

	set[PLset::NEGATIVE_SYMBOL] = new PLset();
	set[PLset::NEGATIVE_SYMBOL]->add(new Token(Token::NUMBER) );
	set[PLset::NEGATIVE_SYMBOL]->add(new Word("false", Token::KEYWORD) );
	set[PLset::NEGATIVE_SYMBOL]->add(new Word("true", Token::KEYWORD) );
	set[PLset::NEGATIVE_SYMBOL]->add(new Word("") );    //ID
	set[PLset::NEGATIVE_SYMBOL]->add(new Token(Token::LEFT_PARATHESIS) );
	set[PLset::NEGATIVE_SYMBOL]->add(new Token(Token::NOT) );

	set[PLset::SIMPLE_EXPRESSION1] = new PLset();
	set[PLset::SIMPLE_EXPRESSION1]->add(new Token(Token::LESS_THAN) );
	set[PLset::SIMPLE_EXPRESSION1]->add(new Token(Token::EQUAL) );
	set[PLset::SIMPLE_EXPRESSION1]->add(new Token(Token::GREATER_THAN) );
	set[PLset::SIMPLE_EXPRESSION1]->add(new Token(Token::AND) );
	set[PLset::SIMPLE_EXPRESSION1]->add(new Token(Token::OR) );
	set[PLset::SIMPLE_EXPRESSION1]->add(new Token(Token::COMMA) );
	set[PLset::SIMPLE_EXPRESSION1]->add(new Token(Token::SEMI_COLON) );
	set[PLset::SIMPLE_EXPRESSION1]->add(new Token(Token::ARROW) );
	set[PLset::SIMPLE_EXPRESSION1]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::SIMPLE_EXPRESSION1]->add(new Token(Token::RIGHT_BRACKET) );

	set[PLset::ADDING_OPERATOR] = new PLset();
	set[PLset::ADDING_OPERATOR]->add(new Token(Token::NUMBER));
	set[PLset::ADDING_OPERATOR]->add(new Word("false", Token::KEYWORD) );
	set[PLset::ADDING_OPERATOR]->add(new Word("true", Token::KEYWORD) );
	set[PLset::ADDING_OPERATOR]->add(new Word("") );    //ID
	set[PLset::ADDING_OPERATOR]->add(new Token(Token::LEFT_PARATHESIS) );
	set[PLset::ADDING_OPERATOR]->add(new Token(Token::NOT) );

	set[PLset::TERM] = new PLset();
	set[PLset::TERM]->add(new Token(Token::ADD)  );
	set[PLset::TERM]->add(new Token(Token::MINUS)  );
	set[PLset::TERM]->add(new Token(Token::LESS_THAN) );
	set[PLset::TERM]->add(new Token(Token::EQUAL) );
	set[PLset::TERM]->add(new Token(Token::GREATER_THAN) );
	set[PLset::TERM]->add(new Token(Token::AND) );
	set[PLset::TERM]->add(new Token(Token::OR) );
	set[PLset::TERM]->add(new Token(Token::COMMA) );
	set[PLset::TERM]->add(new Token(Token::SEMI_COLON) );
	set[PLset::TERM]->add(new Token(Token::ARROW) );
	set[PLset::TERM]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::TERM]->add(new Token(Token::RIGHT_BRACKET) );

	set[PLset::TERM1] = new PLset();
	set[PLset::TERM1]->add(new Token(Token::ADD)  );
	set[PLset::TERM1]->add(new Token(Token::MINUS)  );
	set[PLset::TERM1]->add(new Token(Token::LESS_THAN) );
	set[PLset::TERM1]->add(new Token(Token::EQUAL) );
	set[PLset::TERM1]->add(new Token(Token::GREATER_THAN) );
	set[PLset::TERM1]->add(new Token(Token::AND) );
	set[PLset::TERM1]->add(new Token(Token::OR) );
	set[PLset::TERM1]->add(new Token(Token::COMMA) );
	set[PLset::TERM1]->add(new Token(Token::SEMI_COLON) );
	set[PLset::TERM1]->add(new Token(Token::ARROW) );
	set[PLset::TERM1]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::TERM1]->add(new Token(Token::RIGHT_BRACKET) );

	set[PLset::MULTIPLYING_OPERATOR] = new PLset();
	set[PLset::MULTIPLYING_OPERATOR]->add(new Token(Token::NUMBER) );
	set[PLset::MULTIPLYING_OPERATOR]->add(new Word("false", Token::KEYWORD) );
	set[PLset::MULTIPLYING_OPERATOR]->add(new Word("true", Token::KEYWORD) );
	set[PLset::MULTIPLYING_OPERATOR]->add(new Word("") );    //ID
	set[PLset::MULTIPLYING_OPERATOR]->add(new Token(Token::LEFT_PARATHESIS) );
	set[PLset::MULTIPLYING_OPERATOR]->add(new Token(Token::NOT) );

	set[PLset::FACTOR] = new PLset();
	set[PLset::FACTOR]->add(new Token(Token::TIMES)  );
	set[PLset::FACTOR]->add(new Token(Token::MOD)  );
	set[PLset::FACTOR]->add(new Token(Token::DIV)  );
	set[PLset::FACTOR]->add(new Token(Token::ADD)  );
	set[PLset::FACTOR]->add(new Token(Token::MINUS)  );
	set[PLset::FACTOR]->add(new Token(Token::LESS_THAN) );
	set[PLset::FACTOR]->add(new Token(Token::EQUAL) );
	set[PLset::FACTOR]->add(new Token(Token::GREATER_THAN) );
	set[PLset::FACTOR]->add(new Token(Token::AND) );
	set[PLset::FACTOR]->add(new Token(Token::OR) );
	set[PLset::FACTOR]->add(new Token(Token::COMMA) );
	set[PLset::FACTOR]->add(new Token(Token::SEMI_COLON) );
	set[PLset::FACTOR]->add(new Token(Token::ARROW) );
	set[PLset::FACTOR]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::FACTOR]->add(new Token(Token::RIGHT_BRACKET) );



	set[PLset::VARIABLE_ACCESS] = new PLset();
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::COMMA) );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::SEMI_COLON) );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::TIMES)  );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::MOD)  );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::DIV)  );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::ASSIGN)  );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::ADD)  );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::MINUS)  );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::LESS_THAN) );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::EQUAL) );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::GREATER_THAN) );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::AND) );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::OR) );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::ARROW) );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::VARIABLE_ACCESS]->add(new Token(Token::RIGHT_BRACKET) );


	set[PLset::INDEXED_SELECTOR] = new PLset();
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::COMMA) );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::SEMI_COLON) );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::TIMES)  );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::MOD)  );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::DIV)  );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::ASSIGN)  );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::ADD)  );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::MINUS)  );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::LESS_THAN) );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::EQUAL) );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::GREATER_THAN) );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::AND) );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::OR) );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::ARROW) );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::INDEXED_SELECTOR]->add(new Token(Token::RIGHT_BRACKET) );



	set[PLset::CONSTANT] = new PLset();
	set[PLset::CONSTANT]->add(new Token(Token::EQUAL) );
	set[PLset::CONSTANT]->add(new Token(Token::SEMI_COLON) );
	set[PLset::CONSTANT]->add(new Token(Token::RIGHT_BRACKET) );
	set[PLset::CONSTANT]->add(new Token(Token::TIMES)  );
	set[PLset::CONSTANT]->add(new Token(Token::MOD)  );
	set[PLset::CONSTANT]->add(new Token(Token::DIV)  );
	set[PLset::CONSTANT]->add(new Token(Token::ADD)  );
	set[PLset::CONSTANT]->add(new Token(Token::MINUS)  );
	set[PLset::CONSTANT]->add(new Token(Token::LESS_THAN) );
	set[PLset::CONSTANT]->add(new Token(Token::EQUAL) );
	set[PLset::CONSTANT]->add(new Token(Token::GREATER_THAN) );
	set[PLset::CONSTANT]->add(new Token(Token::AND) );
	set[PLset::CONSTANT]->add(new Token(Token::OR) );
	set[PLset::CONSTANT]->add(new Token(Token::ARROW) );
	set[PLset::CONSTANT]->add(new Token(Token::RIGHT_PARATHESIS) );
	set[PLset::CONSTANT]->add(new Token(Token::RIGHT_BRACKET) );



	set[PLset::BOOLEAN_SYMBOL] = new PLset();
	set[PLset::BOOLEAN_SYMBOL]->add(new Token(Token::SEMI_COLON) );
	set[PLset::BOOLEAN_SYMBOL]->add(new Token(Token::RIGHT_BRACKET) );
	set[PLset::BOOLEAN_SYMBOL]->add(new Token(Token::TIMES)  );
	set[PLset::BOOLEAN_SYMBOL]->add(new Token(Token::MOD)  );
	set[PLset::BOOLEAN_SYMBOL]->add(new Token(Token::DIV)  );

	set[PLset::NUMERAL] = new PLset();
	set[PLset::NUMERAL]->add(new Token(Token::SEMI_COLON) );
	set[PLset::NUMERAL]->add(new Token(Token::RIGHT_BRACKET) );
	set[PLset::NUMERAL]->add(new Token(Token::TIMES)  );
	set[PLset::NUMERAL]->add(new Token(Token::MOD)  );
	set[PLset::NUMERAL]->add(new Token(Token::DIV)  );

	set[PLset::CONSTANT_NAME] = new PLset();
	set[PLset::CONSTANT_NAME]->add(new Token(Token::EQUAL) );
	set[PLset::CONSTANT_NAME]->add(new Token(Token::SEMI_COLON) );
	set[PLset::CONSTANT_NAME]->add(new Token(Token::RIGHT_BRACKET) );
	set[PLset::CONSTANT_NAME]->add(new Token(Token::TIMES)  );
	set[PLset::CONSTANT_NAME]->add(new Token(Token::MOD)  );
	set[PLset::CONSTANT_NAME]->add(new Token(Token::DIV)  );

	set[PLset::VARIABLE_NAME] = new PLset();
	set[PLset::CONSTANT_NAME]->add(new Token(Token::COMMA) );
	set[PLset::CONSTANT_NAME]->add(new Token(Token::RIGHT_BRACKET) );
	set[PLset::CONSTANT_NAME]->add(new Token(Token::SEMI_COLON) );
	set[PLset::CONSTANT_NAME]->add(new Token(Token::TIMES)  );
	set[PLset::CONSTANT_NAME]->add(new Token(Token::MOD)  );
	set[PLset::CONSTANT_NAME]->add(new Token(Token::DIV)  );

	set[PLset::PROCEDURE_NAME] = new PLset();
	set[PLset::PROCEDURE_NAME]->add(new Word("begin ", Token::KEYWORD) );
	set[PLset::PROCEDURE_NAME]->add(new Token(Token::SEMI_COLON)  );
}

//-----------------------------------------------------------------------------
// Getter - Set
PLset* Follow::Set(PLset::NonTerminal _set)	{
	return set[_set];
}

